#ifndef _KEYRECOMMANDER_H_
#define _KEYRECOMMANDER_H_

#include"DictProducer.h"

#include<vector>
#include<string>
#include<set>
#include<map>

using std::vector;
using std::string;
using std::pair;
using std::set;
using std::map;

class KeyRecommander
{
public:
    KeyRecommander(string &query ) ;//const TcpConnectionPtr &
    ~KeyRecommander() ;

    void execute();                     //执行查询
    void queryIndexTable();             //查询索引
    void statistic(set<int>&iset);      //进行计算
    int distance(const string &rhs);    //计算最小编辑距离
    //void response();                  //响应客户的请求
private:
    //为计算最小编辑距离做计算
    size_t nBytesCode(const char ch);       //求取一个字符占据的字节数
    size_t length(const string &str);       //求取一个字符串的字符长度
    int triple_min(const int &a,const int &b,const int &c);
    
private:
    string _queryWord;      //等待查询的单词
    //TcpConnectionPtr _coon;
    //priority_queue<MyResult,vector<MyResult>,
    //MyCompare>_result;           保存候选结果集的优先队列
    //
    //词典类中元素
    DictProducer _1dict;
    vector<pair<string,int>>_dict;        //词典,为其他类中
    map<char,set<int>>_indexTable;        //索引表
    set<int>_result;         //保存查询到的词典的下标
    vector<pair<int,int>>_Myresult;      //第一个为词典下标，第二个为最小编辑距离 
};

#endif
